package com.veng.springbootdemo;

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 转发消息主要是根据通配符。
 * 在这种交换机下，队列和交换机的绑定会定义一种路由模式，通配符就要在这种路由模式和路由键之间匹配后交换机才能转发消息。
 * # 表示零个或多个词.  * 表示一个词
 * 有点像路由算法，跟地址选址差不多，根据最长匹配
 *
 */
@Configuration
public class TopicRabbitConfig {
    private final static String FIRST = "topic.first";
    private final static String SECOND = "topic.second";

    @Bean
    public Queue queue1(){
        return new Queue(FIRST);
    }

    @Bean
    public Queue queue2(){
        return new Queue(SECOND);
    }

    @Bean
    public TopicExchange exchange(){
        return new TopicExchange("topicExchange");
    }

    @Bean
    Binding bindingExchange(){
        return BindingBuilder.bind(queue1()).to(exchange()).with("topic.first");
    }

    @Bean
    Binding bindingExchange2(){
        return BindingBuilder.bind(queue2()).to(exchange()).with("topic.#");
    }
}
